using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
/*using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Windows.Forms;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using CrystalDecisions.CrystalReports;
using System.Data.OleDb;
using CrystalDecisions.Web;
using System.Globalization;
*/
public partial class Cotizaciones : System.Web.UI.Page
{
   

    protected void Page_Load(object sender, EventArgs e)
    {
        lb_fechaCotizacion.Text=DateTime.Now.ToString();
        lb_fechaCotizacion.Visible = true;
        tb_codCotizacionBuscar.Focus();

        tb_costoUnitarioGS.Enabled = false;
        tb_costoUnitarioMe.Enabled = true;
        if (ddl_monedas.SelectedValue.Equals("Guaranies"))
        {
            gv_productos.Columns[8].Visible = false;
            gv_productos.Columns[7].Visible = true;
        }
        else
        {
            gv_productos.Columns[8].Visible = true;
            gv_productos.Columns[7].Visible = false;
        }
        lb_fechaInvalida.Visible = false;
        lb_infError.Visible = false;
        lb_infErrorBorrar.Visible = false;
        lb_infPopUpProducto.Visible = false;

    }
    protected void mostrarCabecera_gridViewDetallesCotizacion()
    {
        String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection conexion = new SqlConnection(cadena);
        SqlCommand sgteCodigo = new SqlCommand("Select max(cod_cotizacion) from Detalles_Cotizaciones", conexion);
        try
        {
            conexion.Open();
            sgteCodigo.Connection = conexion;
            sgteCodigo.CommandType = CommandType.Text;
            SqlDataReader read = sgteCodigo.ExecuteReader();
            read.Read();
            string respuesta = read.GetValue(0).ToString();
            read.Close();
            lb_sgteCodigo.Text = respuesta;
            SqlDataSource_detallesCotizaciones.SelectParameters.Clear();
            SqlDataSource_detallesCotizaciones.SelectCommand = "SELECT Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.cod_producto, Productos.nombre, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.cod_familia_producto, Familias_Productos.descripcion AS Expr1, Familias_Productos.iva FROM Detalles_Cotizaciones  JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto  JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca  JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo WHERE Detalles_Cotizaciones.cod_cotizacion =" + lb_sgteCodigo.Text;
            gv_detallesCotizaciones.DataBind();

        }
        catch (Exception error)
        {
            //Response.Write("<SCRIPT language=\"javascript\"> window.alert(\"" + error.Message.ToString() + "\") </SCRIPT>");

        }
        finally
        {
            conexion.Close();
        }
    }
    protected void buscarCodCotizacion()
    {
        SqlDataSource_Cotizac.SelectParameters.Clear();
        SqlDataSource_Cotizac.SelectCommand = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.cod_proveedor, Proveedores.nombre_empresa, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Cotizaciones.cod_moneda, Monedas.descripcion as Moneda FROM Cotizaciones JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor  JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento AND Proveedores.cod_tipo_documento = Personas.cod_tipo_documento  JOIN Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda  WHERE Cotizaciones.[cod_cotizacion] like @cod_cotizacion ORDER BY Cotizaciones.fecha DESC";
        SqlDataSource_Cotizac.SelectParameters.Add("cod_cotizacion", TypeCode.String, "%");
        SqlDataSource_Cotizac.SelectParameters["cod_cotizacion"].DefaultValue = tb_codCotizacionBuscar.Text + "%";
        gv_cotizaciones.DataBind();
    }
    protected void mostrarTodasLasCotizaciones()
    {
         SqlDataSource_Cotizac.SelectParameters.Clear();
         SqlDataSource_Cotizac.SelectCommand = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.cod_proveedor, Proveedores.nombre_empresa, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Cotizaciones.cod_moneda, Monedas.descripcion as Moneda FROM Cotizaciones JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor  JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento AND Proveedores.cod_tipo_documento = Personas.cod_tipo_documento  JOIN Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda  ORDER BY Cotizaciones.fecha DESC";
         gv_cotizaciones.DataBind();


    }
    protected void ib_buscar_Click(object sender, ImageClickEventArgs e)
    {

        lb_infErrorBorrar.Visible = false;
            tb_codCotizacionBuscar.Focus();
            int num = 0;
            try
            {
                SqlDataSource_Cotizac.SelectParameters.Clear();
                if (tb_codCotizacionBuscar.Text != string.Empty)
                {
                    SqlDataSource_Cotizac.SelectCommand = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.cod_proveedor, Proveedores.nombre_empresa, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Cotizaciones.cod_moneda, Monedas.descripcion as Moneda FROM Cotizaciones JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor  JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento AND Proveedores.cod_tipo_documento = Personas.cod_tipo_documento  JOIN Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda  " +
                    "WHERE Cotizaciones.cod_cotizacion = " + tb_codCotizacionBuscar.Text;
                        num++;
                }
                if (tb_fechaBuscar.Text != string.Empty)
                {
                    if (Validar.validarFecha(tb_fechaBuscar.Text))
                    {
                        if (num == 0)
                        {
                            SqlDataSource_Cotizac.SelectCommand = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.cod_proveedor, Proveedores.nombre_empresa, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Cotizaciones.cod_moneda, Monedas.descripcion as Moneda FROM Cotizaciones JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor  JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento AND Proveedores.cod_tipo_documento = Personas.cod_tipo_documento  JOIN Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda " +
                              " WHERE CONVERT(varchar,fecha,103) = CONVERT(varchar, @fecha ,103) ";
                            SqlDataSource_Cotizac.SelectParameters.Add("fecha", TypeCode.DateTime, "%");
                            SqlDataSource_Cotizac.SelectParameters["fecha"].DefaultValue = tb_fechaBuscar.Text;
                            num++;
                        }
                        else
                        {
                            SqlDataSource_Cotizac.SelectCommand += " and CONVERT(varchar,fecha,103) = CONVERT(varchar, @fecha ,103)";
                            SqlDataSource_Cotizac.SelectParameters.Add("fecha", TypeCode.DateTime, "%");
                            SqlDataSource_Cotizac.SelectParameters["fecha"].DefaultValue = tb_fechaBuscar.Text;
                            //SqlDataSource_Cotizac.SelectParameters.Add("fecha", TypeCode.DateTime, tb_fechaBuscar.Text);
                            num++;
                        }
                    }
                    else
                    {
                        lb_fechaInvalida.Visible = true;
                    }
                }
                if (tb_monedaBuscar.Text != string.Empty)
                {
                    if (num == 0)
                    {
                        SqlDataSource_Cotizac.SelectCommand = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.cod_proveedor, Proveedores.nombre_empresa, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Cotizaciones.cod_moneda, Monedas.descripcion as Moneda FROM Cotizaciones JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor  JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento AND Proveedores.cod_tipo_documento = Personas.cod_tipo_documento  JOIN Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda  " +
                            "WHERE Monedas.descripcion = " + tb_monedaBuscar.Text;
                        num++;
                    }
                    else
                    {
                        SqlDataSource_Cotizac.SelectCommand += " and Monedas.descripcion like '" + tb_monedaBuscar.Text + "%' ";
                        //SqlDataSource_Cotizac.SelectParameters.Add("descripcion", TypeCode.String, tb_monedaBuscar.Text);
                        num++;
                    }
                }
                if (tb_proveedorBuscar.Text != string.Empty)
                {
                    if (num == 0)
                    {
                        SqlDataSource_Cotizac.SelectCommand = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.cod_proveedor, Proveedores.nombre_empresa, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Cotizaciones.cod_moneda, Monedas.descripcion as Moneda FROM Cotizaciones JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor  JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento AND Proveedores.cod_tipo_documento = Personas.cod_tipo_documento  JOIN Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda  " +
                        "WHERE Proveedores.nombre_empresa = " + tb_proveedorBuscar.Text;
                        num++;
                    }
                    else
                    {
                        SqlDataSource_Cotizac.SelectCommand += " and Proveedores.nombre_empresa like '" +tb_proveedorBuscar.Text+"%'";
                        //SqlDataSource_Cotizac.SelectParameters.Add("nombre_empresa", TypeCode.String, tb_proveedorBuscar.Text);
                        num++;
                    }
                }
                
                if (tb_codCotizacionBuscar.Text.Equals("") && tb_fechaBuscar.Text.Equals("") && tb_monedaBuscar.Text.Equals("") && tb_proveedorBuscar.Text.Equals("") && tb_productoBuscar.Text.Equals("") && tb_marcaBuscar.Text.Equals("") && tb_modeloBuscar.Text.Equals(""))
                {
                    mostrarTodasLasCotizaciones();
                }
               
                
            }
            catch(Exception error)
            {
                lb_infErrorBorrar.Text = error.Message.ToString();
                lb_infErrorBorrar.Visible = true;
                //  Response.Write("<SCRIPT language=\"javascript\"> window.alert(\"" + error.Message.ToString() + "\") </SCRIPT>");

            }
            gv_cotizaciones.DataBind();
            
    }
    protected void ib_cancelarBuscar_Click(object sender, ImageClickEventArgs e)
    {
        lb_infErrorBorrar.Visible = false;
        tb_codCotizacionBuscar.Text = string.Empty;
        tb_fechaBuscar.Text = string.Empty;
        tb_monedaBuscar.Text = string.Empty;
        tb_proveedorBuscar.Text = string.Empty;
        gv_cotizaciones.DataBind();
        tb_codCotizacionBuscar.Focus();
    }
    protected void gvCotizacion_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        try
        {
            gv_cotizaciones.SelectedIndex = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = gv_cotizaciones.SelectedRow;
            int cod_cotizacion = Convert.ToInt32(row.Cells[0].Text);
            if (e.CommandName == "Ver")
            {
                lb_infErrorBorrar.Text = string.Empty;
                SqlDataSource_detallesCotizaciones.SelectParameters.Clear();
                SqlDataSource_detallesCotizaciones.SelectCommand = "SELECT Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.cod_producto, Productos.nombre, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.cod_familia_producto, Familias_Productos.descripcion AS Expr1, Familias_Productos.iva FROM Detalles_Cotizaciones  JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto  JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca  JOIN Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo WHERE Detalles_Cotizaciones.cod_cotizacion =" + cod_cotizacion;
                gv_detallesCotizaciones.DataBind();
                fs_buscarCotizacion.Visible = false;
                fs_detallesCotacionesBuscar.Visible = true;
                fs_agregarCotizacion.Visible = false;
                gv_detallesCotizaciones.Visible = true;
            }
            if (e.CommandName == "Borrar")
            {
                try
                {
                    Cotizacion.eliminarCotizacion(cod_cotizacion);
                    gv_cotizaciones.DataBind();
                }
                catch (Exception error)
                {
                    lb_infErrorBorrar.Text = "Ocurrio un error al intentar eliminar.";
                    lb_infErrorBorrar.Visible = true;
                    
                }
            }
        }catch(Exception error){
            error.ToString();
            Response.Redirect("Error.aspx");
        }
    }
    
    protected void ib_agregarCotizacionn_Click(object sender, ImageClickEventArgs e)
    {
        tb_nroPedidoCotizacion.Focus();
        gv_detallesCotizacionAgregar.Visible =false;
        ib_cancelarAgregarCotizacion.Visible = false;
        ib_guardarCotizacion.Visible = false;
        div_buscarCotizacion.Visible = false;
        div_agregarCotizaciones.Visible = true;
        fs_agregarCotizacion.Visible = true;
    }
    protected void agregarCabecera()
    {
        String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        lb_estado.Text = "Activo";
        int cod_proveedor = Convert.ToInt32(tb_codProveedorAgregar.Text);
        int cod_moneda = (ddl_monedas.SelectedIndex + 1);
        try
        {
            Cotizacion.agregarCotizaciones(cod_proveedor, cod_moneda);
            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_proveedor.ToString(), "-", "-", "Cotizaciones", "codigo proveedor");
            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_moneda.ToString(), "-", "-", "Cotizaciones", "codigo moneda");
        }
        catch (Exception error)
        {
            lb_infError.Text = error.Message.ToString();
            lb_infError.Visible = true;
            //Response.Write("<SCRIPT language=\"javascript\"> window.alert(\"" + error.Message.ToString() + "\") </SCRIPT>");

        }
        ddl_monedas.Enabled = false;
        ib_popUpProveedor.Enabled = false;
        //gv_detallesCotizacionAgregar.DataBind();
        //String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection conexion = new SqlConnection(cadena);
        SqlCommand cotizacion = new SqlCommand("Select max(cod_cotizacion) from Cotizaciones", conexion);
        try
        {
            conexion.Open();
            cotizacion.Connection = conexion;
            cotizacion.CommandType = CommandType.Text;
            SqlDataReader read1 = cotizacion.ExecuteReader();
            read1.Read();
            string respuesta = read1.GetValue(0).ToString();
            read1.Close();
            tb_codCotizacion.Text = respuesta;
            actualizarDetalle();
            lb_codCotizacionAgregar.Visible = true;
            tb_codCotizacion.Visible = true;
        }
        catch (Exception error)
        {
            lb_infError.Text = error.Message.ToString();
            lb_infError.Visible = true;
            //Response.Write("<SCRIPT language=\"javascript\"> window.alert(\"" + error.Message.ToString() + "\") </SCRIPT>");
        }
        finally
        {
            conexion.Close();
        }
    }
    protected void ib_agregarDetalle_Click(object sender, ImageClickEventArgs e)
    {
        //primero verificar si ya hay una cabecera, si no hay agregar cabecera , si hay
        //solo agregar los detalles
        //ib_popUpProducto.Focus();
        ib_guardarCotizacion.Visible = true;
        ib_cancelarAgregarCotizacion.Visible = true;
        lb_infError.Text = "";
        lb_infError.Visible = false;
        
        if (!tb_costoUnitarioGS.Text.Equals("") || !tb_costoUnitarioMe.Text.Equals(""))
        {
            ib_guardarCotizacion.Visible = true;
            ib_cancelarAgregarCotizacion.Visible = true;
            if (tb_codCotizacion.Text != string.Empty)
            {
                actualizarDetalle();
                gv_detallesCotizacionAgregar.Visible = true;
                Page.Validate("campoVacio");
                if (Page.IsValid && (tb_costoUnitarioGS.Text != string.Empty || tb_costoUnitarioMe.Text != string.Empty))
                {
                    int cod_cotizacion = Convert.ToInt32(tb_codCotizacion.Text);
                    int cod_producto = Convert.ToInt32(tb_codProductoAgregar.Text);
                    /*aca esta mal el tipo de dato de precio unitario CORREGIR*/
                   
                    if (tb_costoUnitarioMe.Text == string.Empty)
                    {
                        try
                        {
                            int precio_unitarioGs = Convert.ToInt32(tb_costoUnitarioGS.Text);
                            Cotizacion.agregarDetallesCotizaciones(cod_cotizacion, cod_producto, precio_unitarioGs);
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_cotizacion.ToString(), "-", "-", "Cotizaciones", "codigo cotizacion");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_producto.ToString(), "-", "-", "Cotizaciones", "codigo producto");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), precio_unitarioGs.ToString(), "-", "-", "Cotizaciones", "precio unitario");
                        }catch(Exception error){
                            error.ToString();
                            lb_infError.Text = "El producto ya ha sido registrado";
                            lb_infError.Visible = true;
                        }
                    }
                    else
                    {
                        try
                        {
                            double precio_unitarioMe = Convert.ToDouble(tb_costoUnitarioMe.Text);
                            Cotizacion.agregarDetallesCotizacionesME(cod_cotizacion, cod_producto, precio_unitarioMe);
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_cotizacion.ToString(), "-", "-", "Cotizaciones", "codigo cotizacion");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_producto.ToString(), "-", "-", "Cotizaciones", "codigo producto");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), precio_unitarioMe.ToString(), "-", "-", "Cotizaciones", "precio unitario");
                        }catch(Exception error){
                            error.ToString();
                            lb_infError.Text = "El producto ya ha sido registrado";
                            lb_infError.Visible = true;
                        }
                    }
                    try
                    {
                        actualizarDetalle();
                        gv_detallesCotizacionAgregar.Visible = true;
                    }
                    catch (Exception error)
                    {
                        lb_infError.Text = error.Message.ToString();
                        lb_infError.Visible = true;
                    
                    }
                }
            }
            else
            {

                tb_codCotizacion.Visible = true;
                Page.Validate("campoVacio");
                if (Page.IsValid && (tb_costoUnitarioGS.Text != string.Empty || tb_costoUnitarioMe.Text != string.Empty))
                {
                    agregarCabecera();
                    actualizarDetalle();
                    gv_detallesCotizacionAgregar.Visible = true;

                    int cod_cotizacion = Convert.ToInt32(tb_codCotizacion.Text);
                    int cod_producto = Convert.ToInt32(tb_codProductoAgregar.Text);
                    /*aca esta mal el tipo de dato de precio unitario CORREGIR*/
                    double precio_unitario = 0;
                    if (tb_costoUnitarioMe.Text == string.Empty)
                    {
                        int precio_unitarioGs = Convert.ToInt32(tb_costoUnitarioGS.Text);
                        try
                        {
                            Cotizacion.agregarDetallesCotizaciones(cod_cotizacion, cod_producto, precio_unitarioGs);
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_cotizacion.ToString(), "-", "-", "Cotizaciones", "codigo cotizacion");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_producto.ToString(), "-", "-", "Cotizaciones", "codigo producto");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), precio_unitario.ToString(), "-", "-", "Cotizaciones", "precio unitario");
                            actualizarDetalle();
                        }
                        catch (Exception error)
                        {
                            lb_infError.Text = error.Message.ToString();
                            lb_infError.Visible = true;
                        }
                    }
                    else
                    {
                        double precio_unitarioMe = Convert.ToDouble(tb_costoUnitarioMe.Text);
                        try
                        {
                            Cotizacion.agregarDetallesCotizacionesME(cod_cotizacion, cod_producto, precio_unitarioMe);
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_cotizacion.ToString(), "-", "-", "Cotizaciones", "codigo cotizacion");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_producto.ToString(), "-", "-", "Cotizaciones", "codigo producto");
                            Auditoria.guardarEvento(Session["usuario"].ToString(), precio_unitario.ToString(), "-", "-", "Cotizaciones", "precio unitario");
                            actualizarDetalle();
                        }
                        catch (Exception error)
                        {
                            lb_infError.Text = error.Message.ToString();
                            lb_infError.Visible = true;
                        }
                    }
                   
                }
            }
            tb_codProductoAgregar.Text = string.Empty;
            tb_costoUnitarioMe.Text = string.Empty;
            tb_costoUnitarioGS.Text = string.Empty;
            tb_marcaAgregarProducto.Text = string.Empty;
            tb_nombreProducto.Text = string.Empty;
            ib_guardarCotizacion.Visible = true;
            ib_cancelarAgregarCotizacion.Visible = true;
        }
        else
        {
            Page.Validate("campoVacio");
            if (Page.IsValid)
            {
                lb_infError.Text = "Debes agregar el costo del producto.";
                lb_infError.Visible = true;
            }
        }
    }
    protected void actualizarDetalle()
    {
        SqlDataSource_Detalles.SelectParameters.Clear();
        SqlDataSource_Detalles.SelectCommand = "SELECT Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.cod_cotizacion, Detalles_Cotizaciones.cod_producto, Productos.nombre, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Detalles_Cotizaciones.costo_unitario_gs as CostoGs, Detalles_Cotizaciones.costo_unitario_me as CostoMe FROM Detalles_Cotizaciones JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto JOIN Marcas ON Marcas.cod_marca = Productos.cod_marca JOIN Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo WHERE Detalles_Cotizaciones.cod_cotizacion = " + Convert.ToInt32(tb_codCotizacion.Text);
        gv_detallesCotizacionAgregar.DataBind();
        gv_detallesCotizacionAgregar.Visible = true;
    }
    protected void ib_cancelarAgregarDetalle_Click(object sender, ImageClickEventArgs e)
    {
        ib_popUpProveedor.Focus();
        tb_costoUnitarioGS.Text = string.Empty;
        tb_costoUnitarioMe.Text = string.Empty;
        tb_nombreProducto.Text = string.Empty;
        tb_marcaAgregarProducto.Text = string.Empty;
        tb_codProductoAgregar.Text = string.Empty;
    }
    protected void gv_detallesCotizacionAgregar_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        if (e.CommandName == "Delete")
        {
            actualizarDetalle();
            gv_cotizaciones.DataBind();
        }
    }
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        tb_codCotizacionBuscar.Focus();
        fs_buscarCotizacion.Visible = true;
        fs_detallesCotacionesBuscar.Visible = false;
    }
    protected void ib_guardarCotizacion_Click(object sender, ImageClickEventArgs e)
    {
        gv_cotizaciones.DataBind();
        tb_nroPedidoCotizacion.Text = "0";
        div_agregarCotizaciones.Visible = false;
        div_buscarCotizacion.Visible = true;
        lb_estado.Text = "finalizado";
        gv_detallesCotizaciones.DataBind();
        Response.Redirect("~/Compras/Cotizaciones.aspx");
               
    }
    protected void limpiar()
    {
        tb_codProveedorAgregar.Text = string.Empty;
        ib_popUpProveedor.Enabled = true;
        ddl_monedas.SelectedIndex = 0;
        tb_codProductoAgregar.Text = string.Empty;
        tb_proveedor.Text = string.Empty;
        tb_empresaProveedora.Text = string.Empty;
        tb_costoUnitarioGS.Text = string.Empty;
        tb_costoUnitarioMe.Text = string.Empty;
        tb_codCotizacion.Text = string.Empty;
        tb_marcaAgregarProducto.Text = string.Empty;
        tb_nombreProducto.Text = string.Empty;
    }
    protected void ib_cancelarAgregarCotizacion_Click(object sender, ImageClickEventArgs e)
    {
        ib_popUpProveedor.Focus();
        if (lb_estado.Text.Equals("Activo"))
        {
            try
            {
                Cotizacion.eliminarCotizacion(Convert.ToInt32(tb_codCotizacion.Text));
                Auditoria.guardarEvento(Session["usuario"].ToString(), "-", tb_codCotizacion.Text, "-", "Cotizaciones", "codigo cotizavion");
        

            }
            catch(Exception error)
            {
                lb_infErrorBorrar.Text = "Ocurrio un error al cancelar la cotizacion";
                lb_infErrorBorrar.Visible = true;
                //Response.Write("<SCRIPT language=\"javascript\"> window.alert(\"" + error.Message.ToString() + "\") </SCRIPT>");

            }
            actualizarDetalle();
            limpiar();
            gv_detallesCotizacionAgregar.Visible = false;
            ddl_monedas.Enabled = true;
            lb_estado.Text = "";
            Response.Redirect("Cotizaciones.aspx");
            ib_cancelarAgregarCotizacion.Visible = false;
        }
        else
        {
            ib_popUpProveedor.Enabled = true;
            limpiar();
            tb_codProveedorAgregar.Enabled = true;
            ddl_monedas.Enabled = true;
            lb_estado.Text = "";
            Response.Redirect("Cotizaciones.aspx");
            ib_cancelarAgregarCotizacion.Visible = false;
        }
    }
    protected void ddl_monedas_SelectedIndexChanged(object sender, EventArgs e)
    {
        ib_popUpProducto.Focus();
        if (ddl_monedas.SelectedValue.Equals("Guaranies"))
        {
            tb_costoUnitarioGS.Enabled = true;
            tb_costoUnitarioMe.Enabled = false;
            gv_productos.Columns[8].Visible = false;
            gv_productos.Columns[7].Visible = true; 
            
        }
        else
        {
            tb_costoUnitarioGS.Enabled = false;
            tb_costoUnitarioMe.Enabled = true;
            gv_productos.Columns[8].Visible = true;
            gv_productos.Columns[7].Visible = false; ;
            //gv_productos.HeaderRow.Cells[7].CssClass = "invisible";
            //gv_productos.HeaderRow.Cells[7].ControlStyle.CssClass="invisible";
        }
    }

    protected void gv_detallesCotizacionAgregar_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    /***************************************
     * 
     * Metodos para PopUpProveedores
     * 
     * *************************************/

    /*Metodo para buscar Proveedor*/
    protected void buscarProveedor(string cadena, string ingresado)
    {
        SqlDataSource_Proveedores.SelectParameters.Clear();
        SqlDataSource_Proveedores.SelectCommand = "select cod_proveedor, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Proveedores.cod_tipo_documento, nombre_empresa from Personas join Proveedores on (Personas.cod_tipo_documento=Proveedores.cod_tipo_documento and Personas.nro_documento = Proveedores.nro_documento) WHERE Proveedores.[" + cadena + "] like @" + cadena;

        SqlDataSource_Proveedores.SelectParameters.Add(cadena, TypeCode.String, "%");
        SqlDataSource_Proveedores.SelectParameters[cadena].DefaultValue = ingresado + "%";

    }
    protected void mostrarTodosLosProveedores()
    {
        SqlDataSource_Proveedores.SelectParameters.Clear();
        SqlDataSource_Proveedores.SelectCommand = "select cod_proveedor, Personas.nombres, Personas.apellidos, Proveedores.nro_documento, Proveedores.cod_tipo_documento, nombre_empresa from Personas join Proveedores on (Personas.cod_tipo_documento=Proveedores.cod_tipo_documento and Personas.nro_documento = Proveedores.nro_documento)";

    }
    /*Metodo para mostrar popUp de Proveedores*/
    protected void mostrarPopUpProveedores()
    {
        mpe_productos.Hide();
        mpe_proveedores.Show();
        //fs_proveedores.Visible = true;
        //p_popUpProveedor.Visible = true;
    }
    protected void ib_buscarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        /*Buscar por codigo del proveedor*/
        int num = 0;
        tb_codProveedorPopUp.Focus();
        if(tb_codProveedorPopUp.Text != string.Empty)
        {
            buscarProveedor("cod_proveedor", tb_codProveedorPopUp.Text);
            num++;
            mostrarPopUpProveedores();

        }/*Buscar por numero de documento*/
        if (tb_nroDocumentoPopUpProveedor.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarProveedor("nro_documento", tb_nroDocumentoPopUpProveedor.Text);
                num++;
            }
            else
            {
                SqlDataSource_Proveedores.SelectCommand += " and nro_documento like '" + tb_nroDocumentoPopUpProveedor.Text + "%'";
                num++;

            }
            mostrarPopUpProveedores();
        }/*Buscar por nombre de la empresa*/
        if (tb_empresa.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarProveedor("nombre_empresa", tb_empresa.Text);
                num++;
            }
            else
            {
                SqlDataSource_Proveedores.SelectCommand += " and nombre_empresa like '" + tb_empresa.Text + "%'";
                num++;
            }
            mostrarPopUpProveedores();
        } 
        if (tb_codProveedorPopUp.Text.Equals("") && tb_nroDocumentoPopUpProveedor.Text.Equals("") && tb_empresa.Text.Equals(""))
        {
            mostrarTodosLosProveedores();
        }
        
        gv_proveedores.DataBind();
        mpe_proveedores.Show();
    }
    /*Se obtienen los datos de la fila seleccionada*/
    protected void gvProveedores_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_proveedores.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_proveedores.SelectedRow;
        string cod_proveedor = row.Cells[0].Text;
        string nombreProveedor = row.Cells[1].Text;
        string apellidoProveedor = row.Cells[2].Text;
        string empresa = row.Cells[5].Text;
        if (e.CommandName == "agregar")
        {
            tb_codProveedorAgregar.Text = cod_proveedor;
            tb_empresaProveedora.Text = empresa;
            tb_proveedor.Text = nombreProveedor;
            ddl_monedas.Focus();
            mpe_proveedores.Hide();
        }
        else
        {
            mpe_proveedores.Show();
        }
        limpiarCamposProveedores();
        mostrarTodosLosProveedores();
    }
    
    protected void ib_popUpProveedor_Click(object sender, ImageClickEventArgs e)
    {
        
        mostrarTodosLosProveedores();
        mostrarPopUpProveedores();
        tb_codProductoPopUp.Focus();
    }
    protected void limpiarCamposProveedores()
    {
        tb_nroDocumentoPopUpProveedor.Text = string.Empty;
        tb_empresa.Text = string.Empty;
        tb_codProveedorPopUp.Text = string.Empty;
    }
    protected void ib_cancelarBuscarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        limpiarCamposProveedores();
        gv_proveedores.DataBind();
    }

    /***************************************
     * 
     * Metodos para PopUpProductos
     * 
     * *************************************/
    protected void ib_popUpProducto_Click(object sender, ImageClickEventArgs e)
    {
        if (ddl_monedas.SelectedIndex.Equals("Dolar"))
        {
            gv_productos.Columns[8].Visible = true;
            gv_productos.Columns[7].Visible = false;
        }
        mostrarTodosLosProductos();
        mostrarPopUpProducto();
        tb_codProductoPopUp.Focus();
    }
    /*metodo para mostrar el popUp de Productos*/
    protected void mostrarPopUpProducto()
    {
        if(ddl_monedas.SelectedIndex.Equals("Dolar")){
            gv_productos.Columns[8].Visible = true;
            gv_productos.Columns[7].Visible = false;
        }
        mpe_productos.Show();
    }
    /*Metodo para buscar productos*/
    protected void buscarProduto(string tabla, string cadena, string ingresado)
    {
        SqlDataSource_Productos.SelectParameters.Clear();
        SqlDataSource_Productos.SelectCommand = "SELECT Productos.cod_producto,Productos.nombre as Descripcion,Marcas.descripcion as Marca,Modelo_Productos.descripcion as Modelo ,Familias_Productos.descripcion as Familia, Familias_Productos.iva as IVA, Productos.precio_venta as PrecioVenta FROM Productos JOIN Familias_Productos ON Productos.cod_familia_producto= Familias_Productos.cod_familia_producto JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca WHERE " + tabla + "." + cadena + " like @" + cadena;

        SqlDataSource_Productos.SelectParameters.Add(cadena, TypeCode.String, "%");
        SqlDataSource_Productos.SelectParameters[cadena].DefaultValue = ingresado + "%";

    }
    protected void mostrarTodosLosProductos()
    {
        //SqlDataSource_Productos.SelectParameters.Clear();
        //SqlDataSource_Productos.SelectCommand = "SELECT Productos.cod_producto,Productos.nombre as Descripcion,Marcas.descripcion as Marca,Modelo_Productos.descripcion as Modelo ,Familias_Productos.descripcion as Familia, Familias_Productos.iva as IVA, Productos.precio_venta as PrecioVenta FROM Productos JOIN Familias_Productos ON Productos.cod_familia_producto= Familias_Productos.cod_familia_producto JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca";
        gv_productos.DataBind();
    }

    protected void ib_buscarProductoPopUp_Click(object sender, ImageClickEventArgs e)
    {
        /*Buscar por codigo del producto*/
        int num = 0;
        tb_codProductoPopUp.Focus();
        if (tb_codProductoPopUp.Text != string.Empty)
        {
            
            buscarProduto("Productos", "cod_producto", tb_codProductoPopUp.Text);
            num++;
            mostrarPopUpProducto();
           

        }/*buscar por nombre del producto*/
        if (tb_nombreProductoPopUp.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarProduto("Productos", "nombre", tb_nombreProductoPopUp.Text);
                num++;
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and nombre like '" + tb_nombreProductoPopUp.Text + "%'";
                num++;
            }
            mostrarPopUpProducto();
        }/*buscar por marca del producto*/
        if(tb_marcaProductoPopUp.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarProduto("Marcas", "descripcion", tb_marcaProductoPopUp.Text);
                num++;
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and Marcas.descripcion like '" + tb_marcaProductoPopUp.Text + "%'";
                num++;
            }
            mostrarPopUpProducto();
        }/*buscar por modelo del producto*/
        if(tb_modeloProductoPopUp.Text != string.Empty){
            if (num == 0)
            {
                buscarProduto("Modelo_Productos", "descripcion", tb_modeloProductoPopUp.Text);
                num++;
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and Modelo_Productos.descripcion like '" + tb_modeloProductoPopUp.Text + "%'";
                num++;
            }
            mostrarPopUpProducto();

        }/*buscar por familia de producto*/
        if (tb_familiaProdutoPopUp.Text!=string.Empty)
        {
            if (num == 0)
            {
                buscarProduto("Familias_Productos", "descripcion", tb_familiaProdutoPopUp.Text);
                num++;
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and Familias_Productos.descripcion like '" + tb_familiaProdutoPopUp.Text + "%'";
                num++;
            }
            mostrarPopUpProducto();
        }
        if (tb_codProductoPopUp.Text.Equals("") && tb_nombreProductoPopUp.Text.Equals("") && tb_marcaProductoPopUp.Text.Equals("") && tb_modeloProductoPopUp.Text.Equals("") && tb_familiaProdutoPopUp.Text.Equals(""))
        {
            mostrarTodosLosProductos();
            mostrarPopUpProducto();
        }
    }
    /*Se obtienen los datos de la fila seleccionada*/
    protected void gvProductos_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_productos.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_productos.SelectedRow;
        string cod_producto = row.Cells[0].Text;
        string nombreProducto = row.Cells[1].Text;
        string marca = row.Cells[2].Text;
        string modelo = row.Cells[3].Text;
        string familiaProducto = row.Cells[4].Text;
        if (e.CommandName == "agregarProducto")
        {
            tb_codProductoAgregar.Text = cod_producto;
            tb_nombreProducto.Text = nombreProducto;
            tb_marcaAgregarProducto.Text = marca;
            //p_popUpProductos.Visible = false;
            //fs_productos.Visible = false;

            lb_infError.Text = string.Empty;
            lb_infError.Visible = false;
            mpe_productos.Hide();

        }
        else
        {
            mpe_productos.Show();
        }
        limpiarCamposPopUpProductos();
        mostrarTodosLosProductos();
    }
    protected void limpiarCamposPopUpProductos()
    {
        tb_nombreProductoPopUp.Text = string.Empty;
        tb_marcaProductoPopUp.Text = string.Empty;
        tb_codProductoPopUp.Text = string.Empty;
        tb_familiaProdutoPopUp.Text = string.Empty;
    }
    /*Metodo para en evento del boton cancelar PopUp Producto*/
    protected void ib_cancelarProductoPopUp_Click(object sender, ImageClickEventArgs e)
    {
        limpiarCamposPopUpProductos();
        ib_guardarCotizacion.Visible = false;
        gv_productos.DataBind();
    }
    /********************************
     * Metodos para generar Reporte
     * 
     * *****************************/
    protected void mostrarTodosReporte(SqlConnection conexion)
    {
       
    }
    protected void mostrarReporteFecha(string fecha, SqlConnection conexion)
    {
        
    }
    protected void mostrarReporte(string tabla, string columna, string texto, SqlConnection conexion)
    {
       
    }
    protected void generarReporte(SqlConnection conexion)
    {
    }
    protected void mostrarReporteCodCotizacion(string columna, string palabra, SqlConnection conexion)
    {

       
    }
    protected void ib_reporteBuscar_Click(object sender, ImageClickEventArgs e)
    {

        Response.Redirect("~/ReporteCotizaciones.aspx");
        
       
    }
    protected void ib_generarReporte_Click(object sender, ImageClickEventArgs e)
    {
        tb_codCotizacionReporte.Focus();
        fs_buscarCotizacion.Visible = false;
        fs_detallesCotacionesBuscar.Visible = false;
        try
        {
            SqlConnection conexion = Conexion.CrearConexion();


            if (tb_codCotizacionReporte.Text != string.Empty)
            {
                mostrarReporte("Cotizaciones", "cod_cotizacion", tb_codCotizacionReporte.Text, conexion);
            }
            if (tb_fechaReporte.Text != string.Empty)
            {
                mostrarReporte("Cotizaciones", "fecha", tb_fechaReporte.Text, conexion);
            }
            if (tb_codMonedaReporte.Text != string.Empty)
            {
                mostrarReporte("Monedas", "descripcion", tb_codMonedaReporte.Text, conexion);
            }
            if (tb_EmpresaReporte.Text != string.Empty)
            {
                mostrarReporte("Proveedores", "nombre_empresa", tb_EmpresaReporte.Text, conexion);
            }/*if (tb_productoReporte.Text != string.Empty)*/
            if (tb_productoReporte.Text != string.Empty) 
            {
                mostrarReporte("Productos", "nombre", tb_productoReporte.Text, conexion);
            }
            if (tb_codCotizacionReporte.Text.Equals("") && tb_fechaReporte.Text.Equals("") && tb_codMonedaReporte.Text.Equals("") && tb_EmpresaReporte.Text.Equals("") && tb_productoReporte.Text.Equals(""))
            {
                mostrarTodosReporte(conexion);
            }
        }
        catch (Exception error)
        {
            //Response.Write("<SCRIPT language=\"javascript\"> window.alert(\"" + error.Message.ToString() + "\") </SCRIPT>");

        }
    }
    protected void ib_cerrarReporte_Click(object sender, ImageClickEventArgs e)
    {
        tb_codCotizacionBuscar.Focus();
        p_reporteCotizacion.Visible = false;
        fs_listaCotizacionesBuscar.Visible = true;
        fs_buscarCotizacion.Visible = true;
    }

    protected void ib_atrasAgregarCotizacion_Click(object sender, ImageClickEventArgs e)
    {
        tb_codCotizacionBuscar.Focus();
        fs_agregarCotizacion.Visible = false;
        div_buscarCotizacion.Visible = true;
        fs_buscarCotizacion.Visible = true;
        fs_listaCotizacionesBuscar.Visible = true;
    }
    protected void ib_cancelarBuscarCotizacionReporte_Click(object sender, ImageClickEventArgs e)
    {
        tb_codCotizacionReporte.Text = string.Empty;
        tb_codMonedaReporte.Text = string.Empty;
        tb_EmpresaReporte.Text = string.Empty;
        tb_fechaReporte.Text = string.Empty;
        tb_productoReporte.Text = string.Empty;
        Response.Redirect("~/Compras/Cotizaciones.aspx");
        
    }
    protected void ib_exportar_Click(object sender, ImageClickEventArgs e)
    {
        
        

        /*// Declare variables and get the export options.
        ExportOptions exportOpts = new ExportOptions();
        ExcelFormatOptions excelFormatOpts = new ExcelFormatOptions();
        DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
        exportOpts = Report.ExportOptions;
        if (tb_exportar.Text.Equals("Excel"))
        {
            // Set the excel format options.
            excelFormatOpts.ExcelUseConstantColumnWidth = true;
            exportOpts.ExportFormatType = ExportFormatType.Excel;
            exportOpts.FormatOptions = excelFormatOpts;
        }
        if (tb_exportar.Text.Equals("Pdf"))
        {
            // Set the disk file options and export.
            exportOpts.ExportDestinationType = ExportDestinationType.DiskFile;
            diskOpts.DiskFileName = fileName;
            exportOpts.DestinationOptions = diskOpts;
        }
        reportDoc.Export();*/
    }
    protected void tb_codCotizacionBuscar_TextChanged(object sender, EventArgs e)
    {
        ib_buscar.Focus();
    }
    protected void tb_nroPedidoCotizacion_TextChanged(object sender, EventArgs e)
    {
        if (!tb_nroPedidoCotizacion.Text.Equals(""))
        {
            String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conexion = new SqlConnection(cadena);
            string nroPedido = tb_nroPedidoCotizacion.Text;
            SqlCommand proveedores = new SqlCommand("Select Pedido_Cotizaciones.cod_proveedor, nombre_empresa, nombres, apellidos from Pedido_Cotizaciones join Proveedores ON Pedido_Cotizaciones.cod_proveedor=Proveedores.cod_proveedor join Personas ON Proveedores.nro_documento=Personas.nro_documento and Proveedores.cod_tipo_documento= Personas.cod_tipo_documento where Pedido_Cotizaciones.cod_pedido_cotizacion = " + nroPedido, conexion);
            try
            {
                conexion.Open();
                proveedores.Connection = conexion;
                proveedores.CommandType = CommandType.Text;
                SqlDataReader read = proveedores.ExecuteReader();
                read.Read();
                string codigoProveedor = read.GetValue(0).ToString();
                string nombreEmpresa = read.GetValue(1).ToString();
                string nombre = read.GetValue(2).ToString();
                string apellido = read.GetValue(3).ToString();
                read.Close();
                tb_codProveedorAgregar.Text = codigoProveedor;
                tb_proveedor.Text = nombre + " " + apellido;
                tb_empresaProveedora.Text = nombreEmpresa;
            }
            catch (Exception error)
            {
                lb_aviso.Text = error.Message.ToString();
            }
            finally
            {
                conexion.Close();
            }
        }
        else
        {
            tb_nroPedidoCotizacion.Text = "0";
        }
    }
    protected void ib_agregarDetallesPedido_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            //Si la cotizacion no existe todavia
            /*Primero se agrega la cabecera*/
            if (tb_codCotizacion.Text.Equals(""))
            {
                agregarCabecera();
                int i = 0;
                foreach (GridViewRow row in gv_productos.Rows)
                {
                    int cod_cotizacion = Convert.ToInt32(tb_codCotizacion.Text);
                    int cod_producto = Convert.ToInt32(row.Cells[0].Text);
                    TextBox tbCosto = (TextBox)row.FindControl("tb_gvCosto");
                    TextBox tbCostoME = (TextBox)row.FindControl("tb_gvCostoMe");

                    if (tbCosto.Text.Equals(""))
                    {
                        tbCosto.Text = "0";
                        
                    }if(tbCostoME.Text.Equals("")){
                        tbCostoME.Text = "0";
                    }
                    /*Label label1 = GridView1.Rows[e.RowIndex].FindControl("Label1") as Label;*/
                    string costo = tbCosto.Text;
                    string costoMe = tbCostoME.Text;
                    //if (chkbox.Checked)
                    if (Convert.ToDouble(tbCosto.Text) > 0 || Convert.ToDouble(tbCostoME.Text) > 0)
                    {
                        ib_guardarCotizacion.Visible = true;
                        //Si el tipo de moneda es guaranies
                        if (ddl_monedas.SelectedValue.Equals("Guaranies"))
                        {
                            tb_costoGSAux.Text = costo;
                            long precio_unitario = Convert.ToInt64(tb_costoGSAux.Text);
                            try
                            {
                                actualizarDetalle();
                                gv_detallesCotizacionAgregar.Visible = true;
                                Cotizacion.agregarDetallesCotizaciones(cod_cotizacion, cod_producto, precio_unitario);
                                //gv_detallesCotizacionAgregar.Rows[i].Visible = false;
                                actualizarDetalle();
                                gv_detallesCotizacionAgregar.Visible = true;
                                ib_guardarCotizacion.Visible = true;
                                ib_cancelarAgregarCotizacion.Visible = true;
                                tb_nroPedidoCotizacion.Enabled = false;
                               // tb_costoGSAux.Text = string.Empty;
                                //row.CssClass = "invisible";
                                tbCosto.Text = string.Empty;
                                i++;
                            }
                            catch (Exception error)
                            {
                                lb_infError.Text = error.Message.ToString();
                                lb_infError.Visible = true;
                            }
                        }//Si el tipo de moneda no es guaranies si es un .flotante
                        else
                        {
                            tb_costoMeAux.Text = costoMe;
                            double precio_unitario = Convert.ToDouble(tb_costoMeAux.Text);
                            try
                            {
                                actualizarDetalle();
                                Cotizacion.agregarDetallesCotizacionesME(cod_cotizacion, cod_producto, precio_unitario);
                                actualizarDetalle();
                                gv_detallesCotizacionAgregar.Visible = true;
                                ib_guardarCotizacion.Visible = true;
                                ib_cancelarAgregarCotizacion.Visible = true;
                                tb_nroPedidoCotizacion.Enabled = false;
                                //row.CssClass = "invisible";
                                //gv_productos.Rows[i].Visible=false;
                                tbCostoME.Text = string.Empty;
                            }
                            catch (Exception error)
                            {
                                lb_infError.Text = error.Message.ToString();

                                lb_infError.Visible = true;
                            }
                        }

                    }
                }
            }
                //Si ya exite una cotizacion y se van a agregar los detalles nomas ya
            else
            {
                int i = 0;
                foreach (GridViewRow row in gv_productos.Rows)
                {
                    int cod_cotizacion = Convert.ToInt32(tb_codCotizacion.Text);
                    int cod_producto = Convert.ToInt32(row.Cells[0].Text);
                    TextBox tbCosto = (TextBox)row.FindControl("tb_gvCosto");
                    //System.Web.UI.WebControls.TextBox tbCosto = (System.Web.UI.WebControls.TextBox)row.FindControl("tb_gvCosto");
                    TextBox tbCostoME = (TextBox)row.FindControl("tb_gvCostoMe");

                    if (tbCosto.Text.Equals(""))
                    {
                        tbCosto.Text = "0";
                    } if (tbCostoME.Text.Equals(""))
                    {
                        tbCostoME.Text = "0";
                    }
                    /*Label label1 = GridView1.Rows[e.RowIndex].FindControl("Label1") as Label;*/
                    string costo = tbCosto.Text;
                    string costoMe = tbCostoME.Text;
                    
                    //if (chkbox.Checked)
                    if ((Convert.ToDouble(tbCosto.Text) > 0.0) || (Convert.ToDouble(tbCostoME.Text) > 0.0))
                    {

                        ib_guardarCotizacion.Visible = true;
                        if (ddl_monedas.SelectedValue.Equals("Guaranies"))
                        {
                            tb_costoGSAux.Text = costo;
                            long precio_unitario = Convert.ToInt64(tb_costoGSAux.Text);
                            try
                            {
                                actualizarDetalle();
                                gv_detallesCotizacionAgregar.Visible = true;
                                Cotizacion.agregarDetallesCotizaciones(cod_cotizacion, cod_producto, precio_unitario);
                                //gv_detallesCotizacionAgregar.Rows[i].Visible=false;
                                actualizarDetalle();
                                gv_detallesCotizacionAgregar.Visible = true;
                                ib_guardarCotizacion.Visible = true;
                                ib_cancelarAgregarCotizacion.Visible = true;
                                tb_nroPedidoCotizacion.Enabled = false;
                                //row.CssClass = "invisible";
                                tbCosto.Text = string.Empty;
                                i++;
                            }
                            catch (Exception error)
                            {
                                lb_infError.Text = error.Message.ToString() + "Codigo Nro: " + cod_producto;
                                lb_infError.Visible = true;
                            }
                        }
                        else
                        {
                            tb_costoMeAux.Text = costoMe;
                            double precio_unitario = Convert.ToDouble(tb_costoMeAux.Text);
                            try
                            {
                                actualizarDetalle();
                                gv_detallesCotizacionAgregar.Visible = true;
                                Cotizacion.agregarDetallesCotizacionesME(cod_cotizacion, cod_producto, precio_unitario);
                                actualizarDetalle();
                                gv_detallesCotizacionAgregar.Visible = true;
                                tb_nroPedidoCotizacion.Enabled = false;
                                ib_guardarCotizacion.Visible = true;
                                ib_cancelarAgregarCotizacion.Visible = true;
                                //row.CssClass = "invisible";
                                tbCostoME.Text = string.Empty;
                            }
                            catch (Exception error)
                            {
                                lb_infError.Text = error.Message.ToString();
                                lb_infError.Visible = true;
                            }
                        }

                    }
                }

            }
        }catch(Exception error){
            lb_infPopUpProducto.Text = "No se ha seleccionado ningun producto. Haz click en cancelar para salir";
            lb_infPopUpProducto.Visible = true;
        }
    }
    protected void tb_codProductoAgregar_TextChanged(object sender, EventArgs e)
    {
        
        if (tb_codProductoAgregar.Text != string.Empty)
        {
            int codPedidoCotizacion = Convert.ToInt32(tb_nroPedidoCotizacion.Text);
            int codProducto = Convert.ToInt32(tb_codProductoAgregar.Text);
            int existe = PedidoCotizaciones.verificarSiExisteProducto(codPedidoCotizacion, codProducto);
            if (existe > 0)
            {
                ib_agregarDetalle.Enabled = true;
                lb_infProducto.Visible = false;
                String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                SqlConnection conexion = new SqlConnection(cadena);
                string nroPedido = tb_nroPedidoCotizacion.Text;
                SqlCommand proveedores = new SqlCommand("Select Productos.nombre, Marcas.descripcion from Productos JOIN Marcas ON Productos.cod_marca=Marcas.cod_marca where cod_producto= " + tb_codProductoAgregar.Text, conexion);
                try
                {
                    conexion.Open();
                    proveedores.Connection = conexion;
                    proveedores.CommandType = CommandType.Text;
                    SqlDataReader read = proveedores.ExecuteReader();
                    read.Read();
                    tb_nombreProducto.Text = read.GetValue(0).ToString();
                    tb_marcaAgregarProducto.Text = read.GetValue(1).ToString();
                }
                catch (Exception error)
                {
                    lb_infProducto.Text = "Ocurrio un error, vuelva a ingresar el codigo del producto";
                    error.Message.ToString();
                    lb_infProducto.Visible = true;
                }

            }
            else
            {
                ib_agregarDetalle.Enabled = false;
                lb_infProducto.Text = "El producto no existe en el Pedido de Cotizacion Nro " + tb_nroPedidoCotizacion.Text;
                lb_infProducto.Visible = true;

            }

        }
    }

    /**************************************
     *  POPUP PEDIDO COTIZACION
     * **************************************/
    protected void ib_popUpPedido_Click(object sender, ImageClickEventArgs e)
    {
        mpe_pedidoCotizacion.Show();
    }
    /*Se obtienen los datos de la fila seleccionada*/
    protected void gvPedidoCotizacion_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_pedidoCotizacion.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_pedidoCotizacion.SelectedRow;
        string cod_pedidoCotizacion = row.Cells[0].Text;

        if (e.CommandName == "agregar")
        {
            tb_nroPedidoCotizacion.Text = cod_pedidoCotizacion;
            tb_nroPedidoCotizacion_TextChanged(sender, e);
            mpe_pedidoCotizacion.Hide();
        }
        else
        {
            mpe_pedidoCotizacion.Show();
        }
    }
    protected void ib_cancelarPedidoCotizacion_Click(object sender, ImageClickEventArgs e)
    {
        tb_marcaPopUpDetallesPedidoCotizacion.Text = string.Empty;
        tb_modeloPopUpDetallesPedidoCotizacion.Text = string.Empty;
        tb_productoPopUpDetallesPedidosCotizaciones.Text = string.Empty;
        mpe_pedidoCotizacion.Hide();
        gv_pedidoCotizacion.DataBind();

    }
    protected void buscarPedidoCotizacion(string tabla, string cadena, string ingresado)
    {
        SqlDataSource_DetallePedidoCotizacion.SelectParameters.Clear();
        SqlDataSource_DetallePedidoCotizacion.SelectCommand = "select cod_pedido_cotizacion as Pedido_Cotizacion , Detalles_Pedidos_Cotizaciones.cod_producto,Productos.nombre as Producto, Productos.cod_marca, "+
            "Marcas.descripcion as Marca, Productos.cod_modelo, Modelo_Productos.descripcion as Modelo from Detalles_Pedidos_Cotizaciones JOIN "+
            "Productos ON Detalles_Pedidos_Cotizaciones.cod_producto = Productos.cod_producto JOIN Marcas on "+
            "Productos.cod_marca=Marcas.cod_marca JOIN Modelo_Productos ON Modelo_Productos.cod_modelo=Productos.cod_modelo WHERE " + tabla + ".[" + cadena + "] like @" + cadena;

        SqlDataSource_DetallePedidoCotizacion.SelectParameters.Add(cadena, TypeCode.String, "%");
        SqlDataSource_DetallePedidoCotizacion.SelectParameters[cadena].DefaultValue = ingresado + "%";

    }
    protected void ib_buscarPedidoCotizacion_Click(object sender, ImageClickEventArgs e)
    {
        int num = 0;
        if (tb_productoPopUpDetallesPedidosCotizaciones.Text != string.Empty)
        {
            buscarPedidoCotizacion("Productos", "nombre", tb_productoPopUpDetallesPedidosCotizaciones.Text);
            num++;
            mpe_pedidoCotizacion.Show();

        } 
        if (tb_modeloPopUpDetallesPedidoCotizacion.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarPedidoCotizacion("Modelo_Productos", "descripcion", tb_modeloPopUpDetallesPedidoCotizacion.Text);
                num++;
                mpe_pedidoCotizacion.Show();
            }
            else
            {
                SqlDataSource_DetallePedidoCotizacion.SelectCommand += " and Modelo_Productos.descripcion like '" + tb_modeloPopUpDetallesPedidoCotizacion.Text + "%' ORDER BY Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion";
                num++;
                mpe_pedidoCotizacion.Show();
            }
        }
        if (tb_marcaPopUpDetallesPedidoCotizacion.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarPedidoCotizacion("Marcas", "descripcion", tb_marcaPopUpDetallesPedidoCotizacion.Text);
                num++;
                mpe_pedidoCotizacion.Show();
            }
            else
            {
                SqlDataSource_DetallePedidoCotizacion.SelectCommand += " and Marcas.descripcion like '" + tb_marcaPopUpDetallesPedidoCotizacion.Text + "%' ORDER BY Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion";
                num++;
                mpe_pedidoCotizacion.Show();
            }
        }
        gv_proveedores.DataBind();
        mpe_proveedores.Show();
     }
}
